package com.hmall.item.web;

import com.hmall.common.client.ItemApi;
import com.hmall.common.dto.PageDTO;

import com.hmall.common.entity.Item;
import com.hmall.common.vo.PageVO;
import com.hmall.item.service.ItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 项目控制器
 *
 * @author fan
 * @date 2024/03/11
 */
@RestController
@RequestMapping("item")
public class ItemController implements ItemApi {

    @Autowired
    private ItemService itemService;

    /**
     * 页面查询
     *
     * @param pageDTO 页面 DTO
     * @return {@link PageVO}<{@link Item}>
     */
    @GetMapping("list")
    public PageVO<Item> pageQuery(PageDTO pageDTO) {

        return itemService.pageQuery(pageDTO);
    }

    /**
     * 按 ID 选择
     *
     * @param id 编号
     * @return {@link Item}
     */
    @GetMapping("{id}")
    public Item selectById(@PathVariable Long id) {

        return itemService.selectById(id);
    }

    /**
     * 插入一个
     *
     * @param item 项目
     */
    @PostMapping
    public void insertOne(@RequestBody Item item){
        itemService.insertOne(item);
    }

    /**
     * 按 ID 修改状态
     *
     * @param id     编号
     * @param status 地位
     */
    @PutMapping("status/{id}/{status}")
    public void modifyStatusById(@PathVariable Long id, @PathVariable Integer status){

        itemService.modifyStatusById(id,status);
    }

    @Override
    public Item findItemById(Long id) {
        return null;
    }

    /**
     * 修改项目
     *
     * @param item 项目
     */
    @PutMapping
    public void modifyItem(@RequestBody Item item){
        itemService.modifyItem(item);

    }



    @Override
    public PageVO<Item> PageQuery(int page, int size) {
        PageDTO pageDTO = new PageDTO();
        pageDTO.setPage(page);
        pageDTO.setSize(size);
        return itemService.pageQuery(pageDTO);
    }

    /**
     * 按 ID 删除项目
     *
     * @param id 编号
     */
    @DeleteMapping("{id}")
    public void deleteItemById(@PathVariable Long id){
        itemService.deleteItemById(id);
    }









}
